import java.lang.reflect.Array;
import java.util.Arrays;

public class SortArray {
    public static void main(String[] args) {
        int[]a ={1,2,3,7,8,9,6,4,5};
        Arrays.sort(a);
        mpSort(a);
        System.out.println();
        System.out.print(Arrays.toString(a));

        int[]b ={3,6,2,1,5};
        selectSort(b);
        System.out.println(Arrays.toString(b));

        int[]c ={4,8,6,5,9};
        insertSort(c);
        System.out.println(Arrays.toString(c));
    }

    //冒泡法
    public static void mpSort(int [] array){
        for (int i = 0; i < array.length; i++) {
            for (int j = 1; j < array.length -i; j++) {
                if (array[j-1] > array[j]){
                    int temp = array[j-1];
                    array[j-1]=array[j];
                    array[j] =temp;
                }

            }
        }
    }
    //冒泡0，1相邻，选择排序排相近的
    //选择排序
    //因为i前面的指针已经是最大或最小的的了，只需要交换即可
    public static void selectSort(int[]array){
        for (int i = 0; i < array.length; i++) {
            int index = i;
            //选择控制
            for (int j = i; j < array.length; j++) {
                if (array[index]>array[j]){
                    index = j;
                }
            }
            //此时数组和index交换位置
            if (i != index){
                int temp = array[i];
                array[i] = array[index];
                array[index] =temp;
            }
        }
    }
    //如果遍历的值比插入的值大，就把值放到最后一个
    public static void insertSort(int[] array) {
        int insertNode;
        int j;
        for (int i = 1; i < array.length; i++) {
            insertNode = array[i];
            j = i - 1;
            while (j >= 0 && insertNode < array[j]) {
                array[j + 1] = array[j];
                j--;
            }
            array[j + 1] = insertNode;
        }
    }


}
